HashBag এবং TreeBag

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) Bag এবং MultiSet |
110
110

অ্যাপাচি কমন্স কালেকশনস লাইব্রেরিতে Bag হলো একটি বিশেষ ডেটা স্ট্রাকচার, যা একটি কালেকশনে উপাদানগুলোর সংখ্যা (count) ট্র্যাক করতে ব্যবহৃত হয়। এর দুটি সাধারণ ইমপ্লিমেন্টেশন হল HashBag এবং TreeBag


Bag কি?

Bag একটি ইন্টারফেস, যা এমন কালেকশন প্রদান করে যেখানে প্রতিটি উপাদানের উপস্থিতির সংখ্যা সংরক্ষণ করা হয়। এটি সাধারণ Set-এর মতো হলেও, উপাদানগুলির সংখ্যা গুনে রাখতে পারে।


HashBag কি?

HashBag হল Bag-এর একটি ইমপ্লিমেন্টেশন, যা একটি HashMap ব্যবহার করে উপাদান এবং তাদের সংখ্যা সংরক্ষণ করে। এটি অর্ডার সংরক্ষণ করে না, তবে দ্রুত অ্যাক্সেস প্রদান করে।

HashBag-এর বৈশিষ্ট্য

  • দ্রুত পারফরম্যান্স।
  • উপাদানগুলোর সংখ্যা ট্র্যাক করার জন্য HashMap ব্যবহার করে।
  • অর্ডারের উপর নির্ভরশীল নয়।

TreeBag কি?

TreeBag হল Bag-এর আরেকটি ইমপ্লিমেন্টেশন, যা একটি TreeMap ব্যবহার করে উপাদান এবং তাদের সংখ্যা সংরক্ষণ করে। এটি উপাদানগুলোকে সাজানো (sorted) অবস্থায় রাখে।

TreeBag-এর বৈশিষ্ট্য

  • উপাদানগুলো স্বয়ংক্রিয়ভাবে সাজানো হয়।
  • সংখ্যাগুলো গুনে রাখে।
  • TreeMap ব্যবহার করে, যা Comparable ইন্টারফেস বা কাস্টম কম্পারেটর সমর্থন করে।

উদাহরণ: HashBag ব্যবহার

import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.HashBag;

public class HashBagExample {
    public static void main(String[] args) {
        // HashBag তৈরি
        Bag<String> hashBag = new HashBag<>();

        // উপাদান যোগ করা
        hashBag.add("Apple", 3);
        hashBag.add("Orange", 2);
        hashBag.add("Banana", 1);

        // ডেটা রিট্রিভ করা
        System.out.println("Bag contents: " + hashBag);
        System.out.println("Count of Apple: " + hashBag.getCount("Apple"));

        // উপাদান সরানো
        hashBag.remove("Apple", 2);
        System.out.println("Bag contents after removal: " + hashBag);
    }
}

আউটপুট:

Bag contents: [Apple:3, Orange:2, Banana:1]
Count of Apple: 3
Bag contents after removal: [Apple:1, Orange:2, Banana:1]

উদাহরণ: TreeBag ব্যবহার

import org.apache.commons.collections4.Bag;
import org.apache.commons.collections4.bag.TreeBag;

public class TreeBagExample {
    public static void main(String[] args) {
        // TreeBag তৈরি
        Bag<String> treeBag = new TreeBag<>();

        // উপাদান যোগ করা
        treeBag.add("Apple", 3);
        treeBag.add("Orange", 2);
        treeBag.add("Banana", 1);

        // ডেটা রিট্রিভ করা
        System.out.println("Bag contents (sorted): " + treeBag);
        System.out.println("Count of Orange: " + treeBag.getCount("Orange"));

        // উপাদান যোগ বা সরানো
        treeBag.add("Grapes");
        treeBag.remove("Apple", 1);

        System.out.println("Bag contents after update: " + treeBag);
    }
}

আউটপুট:

Bag contents (sorted): [Apple:3, Banana:1, Orange:2]
Count of Orange: 2
Bag contents after update: [Apple:2, Banana:1, Grapes:1, Orange:2]

HashBag এবং TreeBag-এর তুলনা

বৈশিষ্ট্যHashBagTreeBag
অর্ডারউপাদান অর্ডার সংরক্ষণ করে নাউপাদান সাজানো অবস্থায় থাকে
ডেটা স্ট্রাকচারHashMap ব্যবহার করেTreeMap ব্যবহার করে
পারফরম্যান্সদ্রুত অ্যাক্সেস (O(1))তুলনামূলক ধীর (O(log n))
ব্যবহারক্ষেত্রযখন সাজানোর প্রয়োজন নেইযখন উপাদান সাজানোর প্রয়োজন হয়

সারাংশ

HashBag এবং TreeBag উভয়ই Bag ইন্টারফেসের কার্যকর ইমপ্লিমেন্টেশন, তবে এদের ব্যবহার নির্ভর করে প্রয়োজনীয় পারফরম্যান্স এবং সাজানোর প্রয়োজনীয়তার উপর। HashBag দ্রুত কার্যক্রমের জন্য উপযুক্ত, যেখানে TreeBag সাজানো ডেটার জন্য কার্যকর। অ্যাপাচি কমন্স কালেকশনসের এই ফিচারগুলো ডেটা ম্যানেজমেন্টে আরও কার্যকরিতা যোগ করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion